                             - 139 -

                     4.   .

    1.    .

         ,   -
 ,   PCjr    -
 (EGA).   4     Motorola  6845
CRTC (cathode ray  tube  controller);   EGA    -
  ,    6845.   
      ,   
  .  ,     
,    (   )
 .    , 
       
  .  PCjr     ,
"video gate array" (  ),    
     6845.  EGA  , 
  ,     .  -EGA
      ,  
      .       EGA
 ,     .
        ,     
    .    
    .       
  ,  ,     
  .          
,        .
   :

 

       4K    ,   
 B0000H (..  B000:0000).       
  80-  .

  .

         16K     ,
    B8000H.     
  ,  ,     
 ,        - 40 
80.

PCjr.

   PCjr   ,      -
    .   ,
        -
.  BIOS  ,   16K -
      .      
            .  
         
 ,          4K
      .

                             - 140 -

EGA.

   EGA     64K, 128K  256K .    -
        
        1024    (    
[4.3.4]).       , 
    A000H     -
,   B000H  B800H       -
    .     EGA
         A000H  BFFFH,  
 256K .   ,    
           
.           ,
     .    
EGA    16K ,     
   BIOS.    -  C000:0000.

               
 ,    .     -
          , 
         -     
      .     
     2  4 .    -
   PCjr      ,
           
.   EGA          
,      .
           .
   4000 ,      2000 -
    2  (25  * 80 ).   
    ASCII.       
  ASCII              .
  ( )     ,  -
     .      -
       ,  
 ,     .  -
            
 .         
   ,     
 .
     ,  ,     
 ,       ,  
   .  PCjr  EGA  -
  16  ,    EGA     16 
 64 .   16    
   ,   4    
 0  15.   ,     2
  .      
     .   , -
           , 
           
,      .    -
    (BIOS     )  
     .

                             - 141 -

   4.1.1    6845.

         -
  Motorola  6845 (EGA      ,
  6845).     
    ,      PCjr;  EGA  
         
   ,  BIOS   
  .    ,  6845 -
            
 .      -
   ASCII       -
       (     ).
       -
 .       .  -
  EGA       -
.
     6845  18  , -
  0  17.   10      
  .   ,  , -
  ,    -
 BIOS    .    -
   ,    -
 .     8 ,   
 ,   16-  .    #10-11  #14-15
    [4.2.4]    [4.2.1]  .
 #12-13       [4.5.3].   #16-17
     [7.3.2].    
   ;      
  ,       
. EGA  6   ,    -
 .   20  ;  
          -
.
      18       
,        3B5H.  
   3D5H     PCjr (,   
      ,    -
,    ,      B,   
D). EGA         ,   
,        .  
            
,     3B4H (3D4H  ),  
  .   ,   
  3B5H     .   ,
  ,  ,   -
      ,        ,
        ,  ,    
.     ,    
,   INC  DEC,    :

;---   11  12  6845 (  BX)
   ;---   
      MOV  DX,3B4H        ;  
      MOV  AL,11          ;    
      OUT  DX,AL          ;  

                             - 142 -

   ;--- 
      INC  DX             ;  
      MOV  AL,BL          ;  
      OUT  DX,AL          ;    11
   ;---   
      DEC  DX             ;  
      MOV  AL,12          ;    
      OUT  DX,AL          ;  
   ;--- 
      INC  DX             ;  
      MOV  AL,BH          ;  
      OUT  DX,AL          ;    12

               ,
    .      3B8H, 3B9H 
3BAH     3D8H, 3D9H  3DAH -   -
.    ,  -   
   ,     
  .
   PCjr        . 
,     ,    ,  
    ,     -
     .     
        3DAH. 
       ;  PCjr 
         
IN,       ,  -
  OUT.      :

                      

           0                 1
           1                  ()
           2                
           3                 2
           4               
           10H-1FH           

          3DAH.  -
        ,   
  .      
         .     
  ,     .   -
     .
      16     
10H  1FH.      4 ,   
,     16     16  
.         
  ,      
.      .    
   PCjr     -
     ,   -

                             - 143 -

.           
  16  ,    ,     -
,         .
  ,        -
 ,        -
   .      ,
 ,   .
   EGA          
 (  3C0H)        
 (  3CCH-3CFH).    
16   EGA,     00  0FH.  -
    6-  ,  EGA   
    ,       
 16    64-.  [4.4.1]   -
    PCjr  EGA.

                             - 144 -

   4.1.2 /  .

        , 
 - , PCjr -  ,   EGA - .  
PCjr  ,     , -
              
  ,      - .   EGA
  ,       64 ,  
     43 .     
 :

                                                   

    0        40*25 (320*200) B&W          , PCjr, EGA
    1        40*25 (320*200)       , PCjr, EGA
    2        80*25 (640*200) B&W          , PCjr, EGA
    3        80*25 (640*200)       , PCjr, EGA
    4        320*200 4-                      , PCjr, EGA
    5        320*200 B&W  (4   PCjr)          , PCjr, EGA
    6        640*200 B&W                            , PCjr, EGA
    7        80*25 (720*350) B&W          , EGA
    8        160*200 16-                     PCjr
    9        320*200 16-                     PCjr
    A        640*200 4-                      PCjr
    B          EGA
    C          EGA
    D        320*200 16-                     EGA
    E        640*200 16-                     EGA
    F        640*350 4-         EGA
   10        640*350 4-  16-              EGA

   EGA    8    7 -  -
  .  0-6  , -
   .   ,   
EGA           
IBM,         -
,    ,    8*14 ,  
 8*8.
   BIOS          0040:0049,  
         .       
0040:004A        .

    .

        SCREEN   WIDTH    
 . PCjr        
,      ,    -
 .   SCREEN    -
  .        ,  
, :

   0    
   1      
   2      

                             - 145 -

SCREEN 1         .
     .    
         , -
   - .    0
         ,   1 - .
  SCREEN  0,0   -  .
    : 0 -  ,  1
- .    SCREEN 1,1  --
    .
        -.  
COLOR  (.   [4.1.3])   ,    
  .      COLOR
,        .     
         COLOR 
 CLS.
            40  80  .
          -
  WIDTH.  WIDTH 40  40   ,  WIDTH
80 - 80.   .   WIDTH -
    (SCREEN 1  SCREEN 2),  WIDTH  40
     ,  WIDTH 80 -  
 .   :

100 SCREEN 0,1: WIDTH 40  '    40 

100 SCREEN 0,1: WIDTH 40  '   

100 SCREEN 0,1: WIDTH 40  '   
 .
 .
500 WIDTH 80              '    

          40  
  SCREEN 0: WIDTH 40.    
  80    WIDTH 80.     40    
   ,    -
   .     40-   
           
  LOCATE.  CLS     .  
 ,       , 
          (,
  INPUT),          
    ,    
      .   
         
  ,    [4.3.1].
   PCjr    7  :

                      

     0        ,    40  80
     1       4-   
     2       2-   
     3       16-   
     4       4-   
     5       16-   
     6       4-   

                             - 146 -

          .   
   ,    -
 (    [4.5.3]).   
       -
.      CLEAR.    CLEAR  
   ,      ,  
     (  
   [1.3.1]).   ,     16K,
   ,   CLEAR ,,16384.
 ,      ,  
       4000  32000,    4096  
32768.  ,  2K =  2^11,  4K  = 2^12, 16K = 2^14,  32K =
2^15.       16K,  CLEAR ,,3*2^14.
          , -
    CLEAR    -
.  ,      , 
0     .
              -
   EGA.  [4.3.3]   
 ,      .

    .

     0   10H   .    AL
      0  A.   -
     :

   MOV  AH,0       ; 
   MOV  AL,4       ;  
   INT  10H        ; 

         
 F   10H.       
AL.           BH   
    AH.

   MOV  AH,0FH          ; 
   INT  10H             ;    
   MOV  MODE_NUMBER,AL  ;   AL
   MOV  NUMBER_COLS,AH  ;     AH
   MOV  CURRENT_PAGE,BH ;    BH

   MS DOS   Esc-  
   .    ,   -
    ANSI.SYS,     
.       ESC [=#h,  # -  ,
   ASCII,   ESC        
ASCII 27. :

;---  
MED_RES_COLOR  DB   27, '[=4h$'
MED_RES_B&W    DB   27, '[=5h$'

                             - 147 -

;---     
   MOV  AH,9             ;   
   LEA  DX,MED_RES_COLOR ;DS:DX    
   INT  21H              ; 

    .

         ,     PCjr
 ,      .
     ,  
 .       3D8H.  0, 1, 2
  4  .   0  40   ,
   0  80 -    1.  1  -
   ,   0   ,  
1.   2   ,    0  --
,   1. , ,  4   -
   ,    0   -
,    1 ( 2    1).    
 :

                         :  5  4  3  2  1  0

0. 40*25, -,          1  0  1  1  0  0
1. 40*25, ,              1  0  1  0  0  0
2. 80*25, -,          1  0  1  1  0  1
3. 80*25, ,              1  0  1  0  0  1
4. 320*200, -,      0  0  1  1  1  0
5. 320*200, ,          0  0  1  0  1  0
6. 640*200, -,      0  1  1  1  1  0
                                                80*25
                                              320*200
                                           -
                                          
                                        640*200
                                     

             .
   ,      10
     3D5H.  BIOS      ,
       . -
            
 ,   3  5,       -
   .     5   0,   -
    ;   ,   
  ,          
   (.    [4.1.3]).  3 
   .     0,  
      ,      .
  ,      
 1.       -
    [4.5.1].     
   ,       -
 ,   ,   . -
 ,       .

                             - 148 -

            3B8H.
    .   0   -
,          
 .      0,   -
 .     -   3  5, 
    ,    ,  
  .
   PCjr   ,      
   .       
 ,  0  3.       
          3DAH,   
       (   ,  
      ,     -
 ).     :

 0:
    0   1 = , 80*25   5  6,  0
       0   1 =  , 0 = 
       0   1 =  , 0 =  
       0   1 =  , 0 =  
       0   1 = 16- , 0 =   

 3:
    0    0
       1   1 =  , 0 = 16  
       2    0
       3   1 = 2- , 0 =   

      ,      -
   ,           
    6845.       
 ,        -
,       ,    -
     .     -  
     0       3.   
           
      ( [4.5.1]  [4.1.3]).
   EGA     ,    .   
   3D5H.        ,
    - ,      -
  .        3C0H  
,      7   -
    .    
[4.1.3].

                             - 149 -

   4.1.3  / .

               
,           
.        ASCII   ,  
 -  .     PCjr  
  ,    ,    ,   
 (  ).        
     ,        
,           PCjr.   
       .
         -
,       PCjr    -
              (
         ,  
  16 ).  EGA     ,    -
    .  ,   -
          , 
   8*14   .

    :
               -
      .  :

          0 -                   8 - 
          1 -                    9 - 
          2 -                 10 - 
          3 -                    11 -  
          4 -                 12 - 
          5 -                 13 -  
          6 -              14 - 
          7 -                   15 - 

           
  ( 3   ).     
    .       
     .  :

  0 = 1,     
          1 = 1,     
          2 = 1,     
          3 = 1,     
          4 = 1,     
          5 = 1,     
          6 = 1,     
          7 = 1,  

     0-2   4-6          
   .      8 -
  .      ,  
  8 .    
     :

                             - 150 -

            

      0        0       0                    
      0        0       1                     
      0        1       0                   
      0        1       1                       
      1        0       0                   
      1        0       1                    
      1        1       0                
      1        1       1                     

   16     .      7
         ,  
  .      
 5    3D8H  0,   .  
      ,       
  .          
:     40   80   .   
  80       9,    
40    -  8.        
   32.  PCjr    0  1 -
 3   .       
,   3,        
 .   ,    -
       3DAH,  
   ,     3,    -
,    0,      .  -
      ,   
     .
   EGA    / ,    -
     3C0H.       3DAH,  
      3C0H.    
3C0H  10H,    .  ,  
     .      
 ,       .  -
      3,      
.           
 0.
     ,         
  ,      
.  ,    ,   ,  
  MS DOS ( 21H)      
    (      -
.  [4.4.1]).   0  /,   
1  .        BIOS ( 10H),
,         .     
,  PCjr,      
  ,      -
  .
     PCjr        
 .         
   [4.1.1].      10H
 1FH,       0  15.  4- -

                             - 151 -

         0-15,    
 ,       
   .  ,   -    
,            0, 
      ,    
  0.      0000, -
    .      
  ,  ,    0001,      
  0     .   , -
     ,      -
.   .  4-1      
  ,        , 
 ,    .
         PCjr    
   ( 10H   1FH)     , 
  3DAH.         -
.   ,       -
,    ,      3DAH,  
.
   EGA   16   .    
     3C0H,      00  0FH.   
     3DAH,       
 ,       3C0H,  
  .      EGA  
   (    IBM),   -
     64  .      
     6     R'G'B'RGB.  
RGB   ,   R'G'B'  -   .
     R'  R, ,       
  .       -
.   ,   64 , -
    ,  4-  5-   -
          
RGB.   PCjr  EGA    ,  
      7  
   .

 :

          
 .      ,  0-2  -
  ,   4-6  -  .     
   ,    :

                            
 6  2  5  1 4  0

    0        0       0                        
    0        0       1             
    0        1       0                         
    0        1       1                         
    1        0       0                         
    1        0       1                         
    1        1       0                         
    1        1       1                         

                             - 152 -

      ,   0-2   
111,   4-6    000.     -
   .    
,   3    1;    -
   ,      -
 ,      .  
 ,   1   7   .  
    10 ,   .    
    .   
      :

                                10-

                   00000111            7         7
                  00001111            F        15
       00000001            1         1
      00001001            9         9
                   01110000           70       112
           10000111           87       135
          10001111           8F       143
     . 10000001           81       129
     .   10001001           89       137
              11110000           F0       240

    .

              
COLOR.    PRINT    WRITE,     
  COLOR,    ,     
.       ,  
  .    COLOR    ,  
 .
       ,  COLOR  3,4 
    (#3),   -  (#4). -
    0-31,     0-15 
,      ,    16-31
        16,  
   ,    .  (  
      ,       
  .)
    PRINT  WRITE      -
 .         -    
 , ..  /   0    -
  1.
   ,          
,     -.      
 ,      COLOR ,2, ,
       CLS.   -
      ,  ,  -
    COLOR     ,    
   .
         
.   0    ,       1-7
 .    COLOR 0,7  -
     (),     COLOR 7,0

                             - 153 -

           ( ).
  :       -
  1,     .  
8       ,    .
 16       0-15,     .
    7+8+16=31      .
       0  7.
             [4.3.1], 
 COLOR    .     
         -
      POKE.   ,
        -
.        16   
 ( ,          ). 
      OUT &H3D8,8,     
        . 
        "!"  
 .

100 DEF SEG = &HB800   '    
110 OUT &H3D8,8        ' 16  
120 POKE 1000,33       ' !   
130 POKE 1001,196      '   (11000100)

    PCjr        
.      PCjr (     
  ):

100 DEF SEG = &HB800   '  
110 X = INP(&H3AH)     '    
120 OUT &H3AH,3        '    3
130 OUT &H3AH,0        '    
140 POKE 1000,33       ' !   
150 POKE 1001,196      '   (11000100)

        .
  ,     (0001) ,  
      (0101).       
,    1  11H.

100 X = INP (&H3AH)    '    
110 OUT &H3AH,&H11     '    11H
120 OUT &H3AH,5        '    (0101 = 5)

    .

     DOS  BIOS     
     .      9  10H
     .  A 
10H          ;  
     ,      ,  
     .  D -
  10H      .     
   [4.3.1].

                             - 154 -

        DOS    21H    
  .        
 ,   DOS      
    .     -
  . MS  DOS      
ANSI.SYS,     Esc--
.       .
Esc-    9   21H,
        .    
    Esc,    [,   
      .  
  m    $.   -
:

   0      (  )
   1     
   4    
   5    
   7     
   8     (   )

   30            40  
   31           41  
   32           42  
   33            43  
   34             44  
   35           45  
   36              46  
   37             40  

,    MS  DOS     
,      3  .  
Esc-      -
      .    30  31  
 , 32  33 -    1, 34  35 -   2 
36   37 -   3.        
.
               
  9  21H.      ,  
 -    .    -
       ,  -
        (
  BIOS  10H),   ,     
 . ,       -
     .

;---  
STRING_1     DB   'The rain in Spain',0AH,0DH,'$'
STRING_2     DB   'Falls mainly on the plain$'
BLUE_RED     DB   27,'[34;41m$'
BLINK_CYAN   DB   27,'[5;36m$'

                             - 155 -

;--- 
   MOV  AH,9          ;  
   LEA  DX,BLUE_RED   ;    DX
   INT  21H           ;     
   LEA  DX,STRING_1   ;   
   INT  21H           ; 
   LEA  DX,BLINK_CYAN ;   
   INT  21H           ;    
   LEA  DX,STRING_2   ;   
   INT  21H           ; 

       ,      
         , -
          -
 .      Esc-,
   0,   .
   PCjr  EGA    BIOS   -
  .   0  10H 
10H.       ( 0  15)  BL,  
   (   0    15)  BH,   
.   2  10H    
,     ,    17- , 
   ES:DX.   0-15    
  0-15,    16    .  
,      . [4.1.4].

    .

         " ",   
      ,  
,        .   
     PCjr.    
   80*25  16  ,     -
     :

;--- 16      80*25
        MOV  AL,00001001B   ;  0  
        MOV  DX,3D8H        ; 
        OUT  DX,AL          ;  
;---       
        MOV  AX,0B800H      ;  
        MOV  ES,AX          ;
        MOV  CX,2000        ;   2000 
        MOV  BX,1           ;BX    
        MOV  AL,10010100B   ;  
NEXT_CHAR:   MOV  ES:[BX],AL   ;   
        INC  BX             ;   
        INC  BX             ;
        LOOP NEXT_CHAR      ;   

                             - 156 -

   4.1.4    .

        ,   -
    .    
 16 .    ,    
  .        -
  ,    ,   ,  -
   .   ,        
      ;     
       ,     -
  .

    .

         COLOR    
.         , -
  [4.1.3].  ,      
,   COLOR  ,,8.  PCjr      
,      , -
  ,     .  
.  [4.1.3].

    .

            -
 BH,  10H.     
.  ,     ,  -
 0  BH,     BL   .  ,
PCjr   EGA       -
.    1  10H  10H.   
10H   AH, 1  AL     BH.      -
.

    .

           0-3  3D9H (-
   )   ,    -
   .  ,    -
   -  (B),  (G),  (R)   -
.         , 
        .
  4, ,     1,   , 
       .

;---   
   MOV  AL,00001001B   ;  
   MOV  DX,3D9H        ;   
   OUT  DX,AL          ;  

     PCjr    [4.1.1]  ,  
  .  4- ,   0-3
 , ,    ,
    1.         
    1001.     -     2

                             - 157 -

  .          
   2     3DAH.    
    .      ,  
    ,   ,    -
   3DAH.       
 ( 2 ).

   MOV  DX,3DAH     ;    
   IN   AL,DX       ;   
   MOV  AL,2        ;  
   OUT  DX,AL       ;  
   MOV  AL,4        ;   2
   OUT  DX,AL       ;  

     EGA       
(overscan).       11H     3C0H.  
     ,      
,     11H   ,  
 .     4  , 
 EGA        IBM,   
    6 ,   
.

                             - 158 -

   4.1.5  / .

                
  ( ASCII - 32). ,     
     ,      
    .      
     .

    .

          CLS.    
25-          
        KEY OFF.
      ASCII 7.  [4.5.1] 
  ,        
    .

    .

         
.         ,  
      .    -
     ,   0  
10H [4.1.2].         
  (ASCII 32),      
(ASCII 7).            ,
          .   
       PCjr    
     .    
   EGA.

;---     
   MOV  AH,0      ;    
   MOV  AL,2      ;  80*25 -
   INT  10H       ; 

          6  7 
10H,    .   ,    -
    AL           
.          ,
           .
        CX,  -
      DX  (   CH/DH,  
   CL/DL).   ,    
  BH.    0.

;---   3,4  13,15
   MOV  AH,6     ;  
   MOV  AL,0     ;     
   MOV  BH,7     ;   
   MOV  CH,3     ;    
   MOV  CL,4     ;    
   MOV  DH,13    ;    
   MOV  DL,15    ;    
   INT  10H      ; 

                             - 159 -

          9 
10H;       ,   -
  CX.  2000   ,    -
   0,0,     [4.2.1].   AH  
  , AL -  ,  BH -  -
 .

;---      
   MOV  AH,2     ;  
   MOV  BH,0     ; 
   MOV  DX,0     ; 0,0
   INT  10H      ; 
;---   2000 
   MOV  AH,9     ; 
   MOV  CX,2000  ;  
   MOV  AL,' '   ;   AL
   MOV  BL,7     ;  BL
   INT  10H      ; 

   , DOS      
Esc-,       ANSI.SYS.
       .   -
 -  ,      Esc,  -
  $.     9 -
 21H,   DS:DX      .
DOS       .   
      [2J.      ,
    (  ),  [K.

;---  
CLEAR_LINE   DB   27,'[K$'

;---  ,    
   MOV  AH,9          ;  
   LEA  DX,CLEAR_LINE ;DX     
   INT  21H           ;  

    .

             -
        ,    
STOSW.     :

      MOV  AX,0B000H   ;   
      MOV  ES,AX       ;
      MOV  DI,0        ;DI    
      MOV  AL,32       ; 
      MOV  AH,7        ; 
      MOV  CX,2000     ; 
REP   STOSW            ; AX  ES:DI 2000 

                             - 160 -

   4.1.6   .

            ,
        EGA.      ,
     ,    4
 5     0000:0410.         1 
  .     5-4   10
      80   ,
  01 - 40   .  , ,     00,
 EGA.        
 ,  BIOS     ,
  ,      -
.
   ,            
  ,    
  ,      [4.3.1] 
   .

    .

         :

100 '   
110 KEY OFF: CLS
120 WIDTH 40
130 DEF SEG = 0
140 M = PEEK(&H410)
150 POKE &H410,M OR &H30
160 WIDTH 80
170 LOCATE,,1,12,13
180 KEY ON

100 '     (80 )
110 KEY OFF: CLS
120 WIDTH 80
130 DEF SEG = 0
140 M = PEEK(&H410)
150 POKE &H410,(M AND &HCF) OR &H20
160 WIDTH 80
170 SCREEN 0
180 LOCATE,,1,6,7
190 KEY ON

100 '  EGA (80 )
110 KEY OFF: CLS
120 WIDTH 80
130 DEF SEG = 0
140 M = PEEK(&H410)
150 POKE &H410,M AND &HCF
160 WIDTH 80
170 SCREEN 0
180 LOCATE,,1,6,7
190 KEY ON

  WIDTH   SCREEN,      
  .

                             - 161 -

    .

    ,    ,     4   5
  0000:0410.         
.

;---   
   SUB  AX,AX           ; AX
   MOV  ES,AX           ; ES   
   MOV  DL,ES:[410H]    ;    0000:0410
   OR   DL,00110000B    ;  4  5
   MOV  ES:[410H],DL    ; 
   MOV  AH,0            ;   
   MOV  AL,0            ;  80*25
   INT  10H             ; 

;---    (40 )
   SUB  AX,AX           ; ES   
   MOV  ES,AX           ;
   MOV  DL,ES:[410H]    ;    0000:0410
   AND  DL,11001111B    ;  4  5
   OR   DL,00010000B    ;  4
   MOV  ES:[410H],DL    ; 
   MOV  AH,0            ;   
   MOV  AL,1            ;  40*25
   INT  10H             ; 

;---  EGA
   SUB  AX,AX           ; ES   
   MOV  ES,AX           ;
   MOV  DL,ES:[410H]    ;    0000:0410
   AND  DL,11001111B    ;  4  5
   MOV  ES:[410H],DL    ; 
   MOV  AH,0            ;   
   MOV  AL,1            ;  40*25
   INT  10H             ; 